home *** CD-ROM | disk | FTP | other *** search
/ PC World 2004 June / PCWorld_2004-06_cd.bin / software / vyzkuste / koolmoves / kmsetup.exe / {app} / Motion Scripts / Jigsaw Tumble / effect.txt
Text File  |  2002-11-07  |  3KB  |  148 lines

  1. mcN = "letter";
  2.  
  3. increments = Math.floor(3600 / speed);
  4.  
  5. if (increments == 0)
  6.    increments = 1;
  7.  
  8. alphaInc = (100 - alpha) / increments;
  9. scaleInc = (100 - scale) / increments;
  10. posInc   = top           / increments;
  11.  
  12. aLetters = new Array();
  13.  
  14. for (i = 0; i< numChar; i++)
  15. {
  16.   aLetters[i+0] = i;
  17.   var letter =  this[mcN +i];
  18.   letter._visible = false;
  19.   letter.init = letterInit;
  20.   letter.doEffect = effect;
  21.   letter.number = i;
  22. }
  23.  
  24. function letterInit()
  25. {
  26.   this._visible = true;
  27.   this.step = 0;
  28.   this.increments = this._parent.increments;
  29.   this._alpha     = this._parent.alpha;
  30.   this.alphaInc   = this._parent.alphaInc;
  31.   this.scaleInc   = this._parent.scaleInc;
  32.   this.posInc     = this._parent.posInc;
  33.   this.finalX     = this._x;
  34.   this.finalY     = this._y;
  35.  
  36.   this.scale = this._parent.scale;
  37.  
  38.   dir = Math.floor(3.99 * Math.random());
  39.  
  40.   this.xInc = 0;
  41.   this.yInc = 0;
  42.  
  43.   if (dir == 0) // from left
  44.   {
  45.      this._x   = this._x - this._parent.top;
  46.      this.xInc = this.posInc;
  47.   }
  48.   else if (dir == 1) // from top
  49.   {
  50.      this._y   = this._y - this._parent.top;
  51.      this.yInc = this.posInc;
  52.   }
  53.   else if (dir == 2) // from right
  54.   {
  55.      this._x   = this._x + this._parent.top;
  56.      this.xInc = -this.posInc;
  57.   }
  58.   else if (dir == 3) // from bottom
  59.   {
  60.      this._y   = this._y + this._parent.top;
  61.      this.yInc = -this.posInc;
  62.   }
  63.  
  64.   this.angle1 = 720 * Math.random() - 360;
  65.   this.angle2 = 720 * Math.random() - 360;
  66.  
  67.   this.angle1Inc = (0 - this.angle1) / this.increments;
  68.   this.angle2Inc = (0 - this.angle2) / this.increments;
  69.  
  70.   // inner movie clip
  71.   this.letter._rotation = -45;
  72.  
  73.   this._rotation = (this.angle1 + this.angle2) * .5 + 45;
  74.  
  75.   radian = 3.1416 / 180;
  76.  
  77.   angle1Rad = this.angle1 * radian;
  78.   angle2Rad = this.angle2 * radian;
  79.  
  80.   sin45 = Math.sin(45 * radian);
  81.  
  82.   sinAngles = Math.sin(((this.angle1 + this.angle2) * .5 + 45) * radian);
  83.  
  84.   if (sinAngles == 0)
  85.     sinAngles = 1;
  86.  
  87.   this._xscale = this.scale * (Math.cos(angle1Rad) + Math.sin(angle2Rad)) * sin45 / sinAngles;
  88.  
  89.   this._yscale = this.scale * (Math.sin(angle1Rad) + Math.cos(angle2Rad)) * sin45 / sinAngles;
  90. }
  91.  
  92. function effect()
  93. {
  94.   this._x      += this.xInc;
  95.   this._y      += this.yInc;
  96.  
  97.   this._alpha  += this.alphaInc;
  98.   this.scale   += this.scaleInc;
  99.  
  100.   this.angle1 += this.angle1Inc;
  101.   this.angle2 += this.angle2Inc;
  102.  
  103.   this._rotation = (this.angle1 + this.angle2) * .5 + 45;
  104.  
  105.   radian = 3.1416 / 180;
  106.  
  107.   angle1Rad = this.angle1 * radian;
  108.   angle2Rad = this.angle2 * radian;
  109.  
  110.   sin45 = Math.sin(45 * radian);
  111.  
  112.   sinAngles = Math.sin(((this.angle1 + this.angle2) * .5 + 45) * radian);
  113.  
  114.   if (sinAngles == 0)
  115.     sinAngles = 1;
  116.  
  117.   this._xscale = this.scale * (Math.cos(angle1Rad) + Math.sin(angle2Rad)) * sin45 / sinAngles;
  118.  
  119.   this._yscale = this.scale * (Math.sin(angle1Rad) + Math.cos(angle2Rad)) * sin45 / sinAngles;
  120.  
  121.   this.step += 1;
  122.  
  123.   if (this.step >= this.increments)
  124.   {
  125.     this._xscale = 100;
  126.     this._yscale = 100;
  127.     this._rotation = 45;
  128.     this._alpha  = 100;
  129.     this._x      = this.finalX;
  130.     this._y      = this.finalY;
  131.     this.gotoAndStop("end");
  132.   }
  133. }
  134.  
  135. function shuffle()
  136. {
  137.   return Math.floor(Math.random() * 3) -1;
  138. }
  139.  
  140. if (random == 1)
  141. {
  142.   aLetters.sort(shuffle);
  143. }
  144.  
  145. if (reverse == 1)
  146. {
  147.   aLetters.reverse();
  148. }